package while_lang.semantics;

/** Representación de una declaración de una variable, definida por su 
 *  identificador, su tipo y si tiene valor definido o no. Se utiliza en el
 *  chequeo de tipos.
 *  @author Leonardo Val.
 */
public class Declaration {
	public final String id;
	public final Type type;
	public boolean hasValue;
	
	public Declaration(String id, Type type) {
		this(id, type, false);
	}
	
	public Declaration(String id, Type type, boolean hasValue) {
		this.id = id;
		this.type = type;
		this.hasValue = hasValue;
	}
	
	@Override public String toString() {
		return type.unparse() +" "+ id +(hasValue ? "?" : "");
	}
	
}
